import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader as dr
import datetime as dt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
dataset_train = pd.read_csv('D:\HondaTrain.csv')
training_set = dataset_train.iloc[:, 4:5].values
dataset_train
| Date | Open | High | Low | Close | Volume | |
|---|---|---|---|---|---|---|
| 0 | 2-Jan-17 | 677.00 | 698.00 | 677.00 | 681.42 | 138,650 |
| 1 | 3-Jan-17 | 683.00 | 697.25 | 675.00 | 681.22 | 211,450 |
| 2 | 4-Jan-17 | 681.53 | 696.67 | 681.53 | 688.57 | 206,200 |
| 3 | 5-Jan-17 | 688.00 | 712.00 | 688.00 | 707.58 | 570,650 |
| 4 | 6-Jan-17 | 709.00 | 714.00 | 695.01 | 697.03 | 292,700 |
| ... | ... | ... | ... | ... | ... | ... |
| 1166 | 25-Aug-21 | 354.00 | 359.00 | 351.00 | 355.62 | 21,900 |
| 1167 | 26-Aug-21 | 357.65 | 357.65 | 344.00 | 346.39 | 52,100 |
| 1168 | 27-Aug-21 | 346.00 | 349.00 | 338.00 | 341.50 | 142,000 |
| 1169 | 30-Aug-21 | 345.00 | 345.00 | 341.00 | 341.78 | 41,800 |
| 1170 | 31-Aug-21 | 340.35 | 347.50 | 338.00 | 342.96 | 31,700 |
1171 rows × 6 columns
stock_price_train = dataset_train.iloc[:-60, 4:5].values
sc = MinMaxScaler(feature_range = (0, 1))
training_set_scaled = sc.fit_transform(training_set).reshape(-1,1)
X_train = []
y_train = []
for i in range(60, len(training_set_scaled)):
X_train.append(training_set_scaled[i-60:i, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
regressor = Sequential()
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units = 1))
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor.fit(X_train, y_train, epochs = 100, batch_size = 32, verbose='auto')
Epoch 1/100 35/35 [==============================] - 12s 112ms/step - loss: 0.0221 Epoch 2/100 35/35 [==============================] - 4s 110ms/step - loss: 0.0051 Epoch 3/100 35/35 [==============================] - 4s 127ms/step - loss: 0.0044 Epoch 4/100 35/35 [==============================] - 4s 120ms/step - loss: 0.0039 Epoch 5/100 35/35 [==============================] - 5s 129ms/step - loss: 0.0040 Epoch 6/100 35/35 [==============================] - 4s 114ms/step - loss: 0.0033 Epoch 7/100 35/35 [==============================] - 4s 115ms/step - loss: 0.0034 Epoch 8/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0030 Epoch 9/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0029 Epoch 10/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0039 Epoch 11/100 35/35 [==============================] - 4s 119ms/step - loss: 0.0025 Epoch 12/100 35/35 [==============================] - 4s 116ms/step - loss: 0.0030 Epoch 13/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0029 Epoch 14/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0025 Epoch 15/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0025 Epoch 16/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0026 Epoch 17/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0026 Epoch 18/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0022 Epoch 19/100 35/35 [==============================] - 4s 113ms/step - loss: 0.0023 Epoch 20/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0019 Epoch 21/100 35/35 [==============================] - 4s 122ms/step - loss: 0.0019 Epoch 22/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0019 Epoch 23/100 35/35 [==============================] - 6s 168ms/step - loss: 0.0021 Epoch 24/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0023 Epoch 25/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0019 Epoch 26/100 35/35 [==============================] - 6s 168ms/step - loss: 0.0023 Epoch 27/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0020 Epoch 28/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0019 Epoch 29/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0020 Epoch 30/100 35/35 [==============================] - 4s 114ms/step - loss: 0.0019 Epoch 31/100 35/35 [==============================] - 6s 171ms/step - loss: 0.0018 Epoch 32/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0016 Epoch 33/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0015 Epoch 34/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0017 Epoch 35/100 35/35 [==============================] - 6s 167ms/step - loss: 0.0016 Epoch 36/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0018 Epoch 37/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0018 Epoch 38/100 35/35 [==============================] - 5s 132ms/step - loss: 0.0017 Epoch 39/100 35/35 [==============================] - 5s 147ms/step - loss: 0.0017 Epoch 40/100 35/35 [==============================] - 4s 114ms/step - loss: 0.0014 Epoch 41/100 35/35 [==============================] - 5s 146ms/step - loss: 0.0018 Epoch 42/100 35/35 [==============================] - 5s 127ms/step - loss: 0.0016 Epoch 43/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0014 Epoch 44/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0014 Epoch 45/100 35/35 [==============================] - 6s 169ms/step - loss: 0.0015 Epoch 46/100 35/35 [==============================] - 4s 119ms/step - loss: 0.0014 Epoch 47/100 35/35 [==============================] - 4s 125ms/step - loss: 0.0016 Epoch 48/100 35/35 [==============================] - 4s 124ms/step - loss: 0.0018 Epoch 49/100 35/35 [==============================] - 4s 123ms/step - loss: 0.0014 Epoch 50/100 35/35 [==============================] - 4s 120ms/step - loss: 0.0013 Epoch 51/100 35/35 [==============================] - 5s 144ms/step - loss: 0.0012 Epoch 52/100 35/35 [==============================] - 4s 127ms/step - loss: 0.0014 Epoch 53/100 35/35 [==============================] - 4s 125ms/step - loss: 0.0015 Epoch 54/100 35/35 [==============================] - 4s 122ms/step - loss: 0.0015 Epoch 55/100 35/35 [==============================] - 4s 119ms/step - loss: 0.0013 Epoch 56/100 35/35 [==============================] - 4s 119ms/step - loss: 0.0016 Epoch 57/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0015 Epoch 58/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0014 Epoch 59/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0013 Epoch 60/100 35/35 [==============================] - 4s 114ms/step - loss: 0.0012 Epoch 61/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 62/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0014 Epoch 63/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0018 Epoch 64/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0014 Epoch 65/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0013 Epoch 66/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0011 Epoch 67/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 68/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 69/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0012 Epoch 70/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 71/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0011 Epoch 72/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0011 Epoch 73/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 74/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 75/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 76/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0012 Epoch 77/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 78/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 79/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 80/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 81/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 82/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 83/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0012 Epoch 84/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0012 Epoch 85/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0010 Epoch 86/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0012 Epoch 87/100 35/35 [==============================] - 4s 112ms/step - loss: 9.4526e-04 Epoch 88/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 89/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0010 Epoch 90/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 91/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0011 Epoch 92/100 35/35 [==============================] - 4s 114ms/step - loss: 9.9489e-04 Epoch 93/100 35/35 [==============================] - 4s 111ms/step - loss: 9.9422e-04 Epoch 94/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 95/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0010 Epoch 96/100 35/35 [==============================] - 4s 112ms/step - loss: 0.0011 Epoch 97/100 35/35 [==============================] - 4s 111ms/step - loss: 8.8624e-04 Epoch 98/100 35/35 [==============================] - 4s 111ms/step - loss: 9.6800e-04 Epoch 99/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0011 Epoch 100/100 35/35 [==============================] - 4s 111ms/step - loss: 9.3273e-04
<keras.callbacks.History at 0x22cfb974ee0>
history = regressor.fit(X_train, y_train, validation_split=0.33, epochs=150, batch_size=10, verbose=0)
# list all data in history
print(history.history.keys())
dict_keys(['loss', 'val_loss'])
# import matplotlib as plt
# # summarize history for accuracy
# plt.plot(history.history['accuracy'])
# plt.plot(history.history['val_accuracy'])
# plt.title('model accuracy')
# plt.ylabel('accuracy')
# plt.xlabel('epoch')
# plt.legend(['train', 'test'], loc='upper left')
# plt.show()
# summarize history for loss
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'],loc='upper right')
plt.grid()
plt.show()
dataset_test = pd.read_csv('D:/HondaTest.csv')
dataset_test.replace(' ','',inplace=True)
dataset_test = dataset_test.dropna()
data2 = dataset_test.iloc[:, 4:5].values
total_test = pd.concat((dataset_train['Close'], dataset_test['Close']), axis=0)
inputs = total_test[len(total_test) - len(dataset_test) - 60:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
X_test = []
for i in range(60, len(inputs)):
X_test.append(inputs[i-60:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_stock_price = regressor.predict(X_test)
predicted_stock_price = sc.inverse_transform(predicted_stock_price)
predicted_stock_price_train = regressor.predict(X_train)
predicted_stock_price_train = sc.inverse_transform(predicted_stock_price_train)
predicted_stock_price_train.shape
(1111, 1)
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(dataset_test['Close'], color = 'red', label = 'Real Honda Stock Price')
plt.plot(predicted_stock_price, color = 'blue', label = 'Predicted Honda Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
testScore =(mean_squared_error(dataset_test['Close'], predicted_stock_price))
print('Test Score: %.2f RMSE' % (testScore))
print('Test Score: %.2f MAE' % mean_absolute_error(dataset_test['Close'], predicted_stock_price))
print('Test Score: %.2f R2' % r2_score(dataset_test['Close'],predicted_stock_price))
Test Score: 54.06 RMSE Test Score: 6.05 MAE Test Score: 0.87 R2
print(mean_squared_error(stock_price_train, predicted_stock_price_train))
print(r2_score(stock_price_train, predicted_stock_price_train))
9660.048338125842 0.796674440432818
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(stock_price_train, color = 'red', label = 'Real Honda Stock Price')
plt.plot(predicted_stock_price_train, color = 'blue', label = 'Predicted Honda Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
real_data = [inputs[len(inputs) - 60:len(inputs + 1), 0]]
real_data = np.array(real_data)
real_data = np.reshape(real_data , (real_data.shape[0], real_data.shape[1], 1))
prediction = regressor.predict(real_data)
prediction = sc.inverse_transform(prediction)
print(f"Prediction : {prediction}")
Prediction : [[262.4062]]
regressor_30 = Sequential()
regressor_30.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50, return_sequences = True))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50, return_sequences = True))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50))
regressor_30.add(Dropout(0.2))
regressor_30.add(Dense(units = 30))
regressor_30.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor_30.fit(X_train, y_train, epochs = 100, batch_size = 32, verbose='auto')
Epoch 1/100 35/35 [==============================] - 11s 112ms/step - loss: 0.0529 Epoch 2/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0105 Epoch 3/100 35/35 [==============================] - 4s 110ms/step - loss: 0.0088 Epoch 4/100 35/35 [==============================] - 4s 110ms/step - loss: 0.0072 Epoch 5/100 35/35 [==============================] - 4s 110ms/step - loss: 0.0070 Epoch 6/100 35/35 [==============================] - 4s 110ms/step - loss: 0.0057 Epoch 7/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0055 Epoch 8/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0046 Epoch 9/100 35/35 [==============================] - 4s 110ms/step - loss: 0.0047 Epoch 10/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0047 Epoch 11/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0042 Epoch 12/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0039 Epoch 13/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0038 Epoch 14/100 35/35 [==============================] - 4s 113ms/step - loss: 0.0032 Epoch 15/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0039 Epoch 16/100 35/35 [==============================] - 4s 114ms/step - loss: 0.0035 Epoch 17/100 35/35 [==============================] - 4s 111ms/step - loss: 0.0029 Epoch 18/100 35/35 [==============================] - 4s 116ms/step - loss: 0.0030 Epoch 19/100 35/35 [==============================] - 4s 118ms/step - loss: 0.0027 Epoch 20/100 35/35 [==============================] - 4s 118ms/step - loss: 0.0027 Epoch 21/100 35/35 [==============================] - 4s 113ms/step - loss: 0.0023 Epoch 22/100 35/35 [==============================] - 4s 117ms/step - loss: 0.0024 Epoch 23/100 35/35 [==============================] - 4s 121ms/step - loss: 0.0028 Epoch 24/100 35/35 [==============================] - 4s 118ms/step - loss: 0.0024 Epoch 25/100 35/35 [==============================] - 4s 120ms/step - loss: 0.0024 Epoch 26/100 35/35 [==============================] - 5s 143ms/step - loss: 0.0022 Epoch 27/100 35/35 [==============================] - 5s 146ms/step - loss: 0.0021 Epoch 28/100 35/35 [==============================] - 4s 113ms/step - loss: 0.0020 Epoch 29/100 35/35 [==============================] - 4s 122ms/step - loss: 0.0023 Epoch 30/100 35/35 [==============================] - 6s 171ms/step - loss: 0.0022 Epoch 31/100 35/35 [==============================] - 6s 172ms/step - loss: 0.0021 Epoch 32/100 35/35 [==============================] - 6s 175ms/step - loss: 0.0021 Epoch 33/100 35/35 [==============================] - 5s 149ms/step - loss: 0.0020 Epoch 34/100 35/35 [==============================] - 5s 153ms/step - loss: 0.0021 Epoch 35/100 35/35 [==============================] - 5s 150ms/step - loss: 0.0020 Epoch 36/100 35/35 [==============================] - 6s 177ms/step - loss: 0.0017 Epoch 37/100 35/35 [==============================] - 5s 151ms/step - loss: 0.0018 Epoch 38/100 35/35 [==============================] - 5s 148ms/step - loss: 0.0018 Epoch 39/100 35/35 [==============================] - 5s 157ms/step - loss: 0.0016 Epoch 40/100 35/35 [==============================] - 5s 150ms/step - loss: 0.0020 Epoch 41/100 35/35 [==============================] - 5s 154ms/step - loss: 0.0019 Epoch 42/100 35/35 [==============================] - 5s 152ms/step - loss: 0.0016 Epoch 43/100 35/35 [==============================] - 5s 150ms/step - loss: 0.0017 0s - loss: 0.00 Epoch 44/100 35/35 [==============================] - 5s 141ms/step - loss: 0.0018 Epoch 45/100 35/35 [==============================] - 5s 152ms/step - loss: 0.0016 Epoch 46/100 35/35 [==============================] - 6s 161ms/step - loss: 0.0014 Epoch 47/100 35/35 [==============================] - 6s 171ms/step - loss: 0.0015 Epoch 48/100 35/35 [==============================] - 7s 192ms/step - loss: 0.0017 Epoch 49/100 35/35 [==============================] - 6s 183ms/step - loss: 0.0015 Epoch 50/100 35/35 [==============================] - 6s 179ms/step - loss: 0.0016 Epoch 51/100 35/35 [==============================] - 6s 157ms/step - loss: 0.0019 Epoch 52/100 35/35 [==============================] - 5s 143ms/step - loss: 0.0014 Epoch 53/100 35/35 [==============================] - 6s 162ms/step - loss: 0.0015 1s - los Epoch 54/100 35/35 [==============================] - 6s 161ms/step - loss: 0.0014 Epoch 55/100 35/35 [==============================] - 6s 164ms/step - loss: 0.0014 Epoch 56/100 35/35 [==============================] - 5s 147ms/step - loss: 0.0015 Epoch 57/100 35/35 [==============================] - 5s 149ms/step - loss: 0.0015 Epoch 58/100 35/35 [==============================] - 5s 151ms/step - loss: 0.0013 Epoch 59/100 35/35 [==============================] - 6s 164ms/step - loss: 0.0014 Epoch 60/100 35/35 [==============================] - 6s 166ms/step - loss: 0.0014 Epoch 61/100 35/35 [==============================] - 5s 142ms/step - loss: 0.0013 Epoch 62/100 35/35 [==============================] - 5s 149ms/step - loss: 0.0012 Epoch 63/100 35/35 [==============================] - 6s 159ms/step - loss: 0.0013 Epoch 64/100 35/35 [==============================] - 5s 156ms/step - loss: 0.0014 Epoch 65/100 35/35 [==============================] - 5s 149ms/step - loss: 0.0014 Epoch 66/100 35/35 [==============================] - 6s 162ms/step - loss: 0.0013 Epoch 67/100 35/35 [==============================] - 5s 151ms/step - loss: 0.0011 Epoch 68/100 35/35 [==============================] - 5s 144ms/step - loss: 0.0012 Epoch 69/100 35/35 [==============================] - 5s 143ms/step - loss: 9.5865e-04 Epoch 70/100 35/35 [==============================] - 5s 147ms/step - loss: 0.0013 Epoch 71/100 35/35 [==============================] - 5s 156ms/step - loss: 0.0012 Epoch 72/100 35/35 [==============================] - 5s 142ms/step - loss: 0.0013 Epoch 73/100 35/35 [==============================] - 5s 142ms/step - loss: 0.0014 Epoch 74/100 35/35 [==============================] - 5s 146ms/step - loss: 0.0012 Epoch 75/100 35/35 [==============================] - 6s 162ms/step - loss: 0.0015 Epoch 76/100 35/35 [==============================] - 6s 159ms/step - loss: 0.0011 Epoch 77/100 35/35 [==============================] - 6s 168ms/step - loss: 0.0012 Epoch 78/100 35/35 [==============================] - 8s 218ms/step - loss: 0.0010 Epoch 79/100 35/35 [==============================] - 7s 197ms/step - loss: 0.0012 Epoch 80/100 35/35 [==============================] - 7s 211ms/step - loss: 0.0011 Epoch 81/100 35/35 [==============================] - 7s 199ms/step - loss: 0.0010 Epoch 82/100 35/35 [==============================] - 5s 154ms/step - loss: 0.0013 Epoch 83/100 35/35 [==============================] - 5s 154ms/step - loss: 0.0011TA Epoch 84/100 35/35 [==============================] - 5s 151ms/step - loss: 0.0011 Epoch 85/100 35/35 [==============================] - 5s 153ms/step - loss: 0.0010 Epoch 86/100 35/35 [==============================] - 5s 150ms/step - loss: 0.0012 Epoch 87/100 35/35 [==============================] - 6s 175ms/step - loss: 0.0011 1s - loss: Epoch 88/100 35/35 [==============================] - 6s 170ms/step - loss: 0.0012 Epoch 89/100 35/35 [==============================] - 5s 140ms/step - loss: 0.0012 Epoch 90/100 35/35 [==============================] - 5s 136ms/step - loss: 0.0011 Epoch 91/100 35/35 [==============================] - 5s 141ms/step - loss: 0.0012 Epoch 92/100 35/35 [==============================] - 5s 153ms/step - loss: 9.7614e-04 Epoch 93/100 35/35 [==============================] - 5s 146ms/step - loss: 0.0010 Epoch 94/100 35/35 [==============================] - 5s 140ms/step - loss: 0.0010 Epoch 95/100 35/35 [==============================] - 5s 149ms/step - loss: 9.9676e-04 Epoch 96/100 35/35 [==============================] - 6s 175ms/step - loss: 0.0010 Epoch 97/100 35/35 [==============================] - 6s 161ms/step - loss: 0.0011 Epoch 98/100 35/35 [==============================] - 5s 155ms/step - loss: 8.2383e-04 Epoch 99/100 35/35 [==============================] - 5s 148ms/step - loss: 7.3881e-04 Epoch 100/100 35/35 [==============================] - 6s 167ms/step - loss: 9.2899e-04
<keras.callbacks.History at 0x22c85cd3610>
real_data_30 = [inputs[len(inputs) - 60:len(inputs + 1), 0]]
real_data_30 = np.array(real_data_30)
real_data_30 = np.reshape(real_data_30 , (real_data_30.shape[0], real_data_30.shape[1], 1))
prediction_30 = regressor_30.predict(real_data_30)
prediction_30 = sc.inverse_transform(prediction_30)
print(f"Prediction : {prediction_30.transpose()}")
Prediction : [[271.627 ] [270.93002] [271.68033] [273.13712] [272.32645] [272.27213] [271.39792] [272.20276] [270.8643 ] [270.7189 ] [272.57486] [273.2172 ] [273.05685] [271.43213] [273.02393] [272.1273 ] [271.087 ] [272.81073] [272.1299 ] [273.1295 ] [271.21838] [273.57693] [271.74463] [271.69098] [272.14728] [271.59113] [271.8343 ] [272.73962] [272.02203] [271.84393]]
DataFrame = pd.DataFrame(prediction_30)
prediction = DataFrame.T
Prediction_Total = pd.concat((dataset_test['Close'],prediction), axis=0,sort=True,ignore_index=True)
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(prediction, color = 'blue', label = 'Predicted Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(Prediction_Total, color = 'blue', label = 'Predicted Stock Price')
plt.plot(dataset_test['Close'], color = 'red',label='Real Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
regressor_30.summary()
Model: "sequential_6"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_24 (LSTM) (None, 60, 50) 10400
dropout_24 (Dropout) (None, 60, 50) 0
lstm_25 (LSTM) (None, 60, 50) 20200
dropout_25 (Dropout) (None, 60, 50) 0
lstm_26 (LSTM) (None, 60, 50) 20200
dropout_26 (Dropout) (None, 60, 50) 0
lstm_27 (LSTM) (None, 50) 20200
dropout_27 (Dropout) (None, 50) 0
dense_6 (Dense) (None, 30) 1530
=================================================================
Total params: 72,530
Trainable params: 72,530
Non-trainable params: 0
_________________________________________________________________
import cufflinks as cf
import plotly.graph_objects as go
from plotly.offline import iplot, init_notebook_mode
import matplotlib.pyplot as plt
cf.go_offline()
init_notebook_mode()
TICKER = "Honda"
dataset_train["Close"].plot(title=f"{TICKER}'s stock price",figsize=(20, 6),grid=True,xlabel='Time',ylabel='Price')
<AxesSubplot:title={'center':"Honda's stock price"}, xlabel='Time', ylabel='Price'>
qf = cf.QuantFig(dataset_train, title="Honda's stock price in 2021", name='Honda')
qf.iplot()
fig = go.Figure(data=
[go.Candlestick(x=dataset_train.index,
open=dataset_train["Open"],
high=dataset_train["High"],
low=dataset_train["Low"],
close=dataset_train["Close"])]
)
fig.update_layout(
title=f"{TICKER}'s adjusted stock price",
yaxis_title="Price ($)"
)
fig.show()
qf = cf.QuantFig(dataset_train, title="Honda's stock price in 2021", name='Honda')
qf.add_sma(periods=14, column='Close', color='purple')
qf.iplot()
qf = cf.QuantFig(dataset_train, title="Honda's stock price in 2021", name='Honda')
qf.add_sma([10, 50], width=2, color=['yellow', 'red'])
qf.iplot()
qf.add_rsi(periods=14, color='green')
qf.iplot()
qf.add_bollinger_bands(periods=20, boll_std=2 ,colors=['orange','grey'], fill=True)
qf.iplot()
qf.add_volume()
qf.iplot()
qf.add_macd()
qf.iplot()